package com.zj.dmsproxy.utils;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.util.TypeUtils;
import com.zj.baseproxy.utils.ClassUtil;
import org.springframework.lang.NonNull;

import java.util.Objects;

/**
 * @author arthur_zhou
 * @date 2023/10/23 11:10
 */
public class JsonUtil {
    /**
     * 转换json，如果是对象，则直接转换，是String等则获取第一列
     *
     * @param obj   原始数据
     * @param clazz 转换对象
     * @return 转换的对象
     */
    public static <T> T cast(@NonNull Object obj, @NonNull Class<T> clazz) {
        if (clazz == obj.getClass()) {
            return clazz.cast(obj);
        }
        if (obj instanceof JSONObject) {
            JSONObject jsonObject = (JSONObject) obj;
            if (ClassUtil.isBaseType(clazz)) {
                Object value = jsonObject.values().stream().findFirst().orElse(null);
                if (Objects.isNull(value)) {
                    return null;
                }
                return TypeUtils.cast(value, clazz, ParserConfig.getGlobalInstance());
            }
        }
        return TypeUtils.cast(obj, clazz, ParserConfig.getGlobalInstance());
    }
}
